// 云函数入口文件
const cloud = require('wx-server-sdk')
const crypto = require('crypto')
const { authenticator } = require('otplib')
const qrcode = require('qrcode')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

// 云函数入口函数
exports.main = async (event, context) => {
  try {
    const { openId } = event

    if (!openId) {
      return {
        success: false,
        message: '未提供用户标识'
      }
    }

    // 生成随机密钥
    const secret = authenticator.generateSecret()

    // 创建临时存储，正式绑定前不存入数据库
    // 这里使用小程序名称和用户ID，生成TOTP二维码
    const appName = '工具集合'
    const user = openId.substring(0, 8) // 使用部分openId作为用户标识
    const otpauth = authenticator.keyuri(user, appName, secret)

    // 生成二维码
    const qrCodeUrl = await qrcode.toDataURL(otpauth)

    return {
      success: true,
      secret,
      qrCodeUrl
    }
  } catch (error) {
    console.error('Generate MFA secret error:', error)
    return {
      success: false,
      error: error.message
    }
  }
}
